package com.demo.java.OD251_300.OD298;

import java.util.*;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【垃圾信息拦截】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146091144
 */
public class OdMain {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        // 输入邮件记录的数量
        int n = input.nextInt();

        // 存储所有邮件的发送与接收关系
        List<int[]> connections = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            int id_from = input.nextInt();  // 发件人
            int id_to = input.nextInt();    // 收件人
            connections.add(new int[]{id_from, id_to});
        }

        // 输入目标用户的ID
        int target_id = input.nextInt();

        // 用来存储发送给和接收的人的集合
        Set<Integer> send_mail_persons = new HashSet<>();
        Set<Integer> get_mail_persons = new HashSet<>();
        // 用来统计每个用户的邮件发送次数和接收次数
        Map<Integer, Integer> send_mail_count = new HashMap<>();
        Map<Integer, Integer> get_mail_count = new HashMap<>();

        // 用来记录目标用户发送和接收到的邮件数量
        int sent_mails_num = 0;
        int received_mails_num = 0;

        // 遍历所有邮件记录，统计目标用户的发送与接收情况
        for (int[] conn : connections) {
            if (conn[0] == target_id) {
                send_mail_persons.add(conn[1]);  // 记录发送给的不同的人
                sent_mails_num += 1;             // 统计发送邮件数量
                send_mail_count.put(conn[1], send_mail_count.getOrDefault(conn[1], 0) + 1);  // 统计发送次数
            } else if (conn[1] == target_id) {
                received_mails_num += 1;  // 统计收到邮件数量
                get_mail_persons.add(conn[0]);  // 记录接收者
                get_mail_count.put(conn[0], get_mail_count.getOrDefault(conn[0], 0) + 1);  // 统计接收次数
            }
        }

        // 判断目标用户是否为垃圾邮件发送者
        boolean is_spam = false;
        // 去掉发送邮件给自己的人
        send_mail_persons.removeAll(get_mail_persons);
        // 判断发送给的不同人数是否超过5人
        int num_unique_receivers = send_mail_persons.size();
        // 判断发送邮件数量和接收邮件数量的差是否大于10
        int num_sent_mails_minus_received = sent_mails_num - received_mails_num;

        // 判断条件：发送给超过5个不同的人，或者发送-接收的差大于10
        if (num_unique_receivers > 5 || num_sent_mails_minus_received > 10) {
            is_spam = true;
        } else {
            // 检查每个收件人的邮件差距，判断是否符合垃圾邮件标准
            for (Map.Entry<Integer, Integer> entry : send_mail_count.entrySet()) {
                int receiver_id = entry.getKey();
                int sent_count = entry.getValue();
                if (get_mail_count.containsKey(receiver_id)) {
                    if (sent_count - get_mail_count.get(receiver_id) > 5) {
                        is_spam = true;
                        break;
                    }
                }
            }
        }

        // 输出结果：是否为垃圾邮件，发送的不同人数，发送和接收邮件数量差
        System.out.println(is_spam + " " + num_unique_receivers + " " + num_sent_mails_minus_received);
    }
}